﻿/**
* autor : MARCELO DE CONTO
* descricao : Função usada para consulta de dados
* Consultar = String com a descricao de qual tabela pesquisa
* Tipo = Modal(M), Consulta dentro da Modal(C), Gatilho no campo(G)
* Campo = Campo que sera preenchido
* data : 19/12/2014
*/
function consulta(consultar,tipo,campo){

	// GRAVA NAS FLAGS QUANDO É ABERTO O MODAL
	if(tipo=='M'){
		$('#FlagModal').val(consultar);
		$('#FlagCampo').val(campo);

		if(consultar=='PRODUTO'){
			fimEditItens();
		}
	}

	oobj = carga(consultar,tipo);

	if(typeof oobj != "object"){
		return;
	}

	if(tipo == 'M'){
		abrirModal(oobj);
	}else if(tipo == 'C'){
		pesquisa(oobj);
	}else if(tipo == 'G'){
		gatilho(campo, oobj);
	}else{
		$.messager.alert('Aten&ccedil;&atilde;o!','O tipo não foi definido no parametro!','error');
	}
}


/*
 autor : MARCELO DE CONTO
 descricao : Executa uma nova rquisição consultando dentro do modal
 data : 19/12/2014
*/
function gatilho(campo, oobj){

	// VALIDA SE O CAMPO ESTA VAZIO
	if($('#'+campo.id).val() == '')
		return;

	var values = "campo="+oobj.combo[0].id;
	values += "&pesquisa="+$('#'+campo.id).val();
	values += "&page=1"
	values += "&rows=1"

	$("#mascara").mask("Processando Aguarde.....");

	$.ajax({
		url: oobj.url,
		type: "post",
		data: values,
		success: function(result){

			// MONTA OBJETO DO RETORNO
			var ret = eval("(" + result + ")")
			$("#mascara").unmask();

			// ABRE MENSAGEM DE ERRO NO RETORNO
			if(ret.total==0){
				$.messager.alert('Aten&ccedil;&atilde;o!',oobj.title+' não encontrado!','info');
			}
			adicionar(ret.rows[0],'',oobj);
		},
		error:function(result){
			$("#mascara").unmask();
			$.messager.alert('Aten&ccedil;&atilde;o!',result,'error');
		}
	});
}

/*
 autor : MARCELO DE CONTO
 descricao : Executa uma nova rquisição consultando dentro do modal
 data : 19/12/2014
*/
function pesquisa(oobj){
	$('#grdModal').datagrid({
		url:oobj.url,
		queryParams: oobj.params,
	});
}

/*
 autor : MARCELO DE CONTO
 descricao : Função que abre o Modal conforme os parametros
 data : 19/12/2014
*/
function abrirModal(oobj){

	//LIMPA CAMPO DO FILTRO
	$('#inFiltro').val('');

	// CRIA O MODAL
	$('#modal').dialog({
        title: oobj.title,
        width: oobj.largura,
        height: oobj.altura,
        closed: false,
        cache: false,
        modal: true
    });

	// CRIA A GRID
    $('#grdModal').datagrid({
		url:oobj.url,
		singleSelect:true,
		showFooter:true,
		pageNumber:1,
		showHeader:true,
		onClickRow: editModal,
		pagination:true,
        queryParams: oobj.params,
		toolbar:'#tbModal',
		pageList:oobj.pagLista,
		fit:true,
		columns:[oobj.colunas],
		onDblClickRow:function(){
			var consultar = $('#FlagModal').val();
			if(consultar!='PRODUTO'){
				adicionar();
			}
		}
	});

	// CRIA A COMBO BOX
	$('#ccModal').combobox({
		valueField: 'id',
		textField: 'value',
		data: oobj.combo
	});
}

/*
 autor : MARCELO DE CONTO
 descricao : INCLUI O RETORNA DAS REQUISIÇÕES NOS CAMPOS DO FORMULARIO
 data : 22/12/2014
*/
function adicionar(gatilho,campo,oobj){

	var dado = '';
	var gravou = true;

	// VERDADEIRO SE A CHAMDA VEIO DE DENTRO DA MODAL
	if(gatilho==undefined){

		// PEGA OS PARAMETROS DAS FLAGS
		var oobj = carga($('#FlagModal').val());
		var campo = $('#FlagCampo').val();
		var row = $('#grdModal').datagrid('getSelected');

		if((row==null || row=='') && campo!='grdItens'){
			$.messager.alert('Aten&ccedil;&atilde;o!','Nenhum item foi selecionado!','info');
			return;
		}

		// FECHA A TELA MODAL
		$('#modal').dialog('close');

	}else{
		row = gatilho
	}

	var Id = document.getElementById(campo);

	if(Id){

		if(Id.tagName=='TABLE'){

			$("#mascara").mask("Processando Aguarde.....");

			// GRAVA E FINALIZA A EDIÇÃO NAS DUAS GRIDS
			fimEditModal();
			fimEditItens();

			var linModal = $('#grdModal').datagrid('getRows');
			var cTot = $('#txtTotal').numberbox('getValue');
			var total = 0;

			if(cTot>0){
				total = parseFloat(cTot);
			}else{
				total = 0;
			}

			// FAZ A COPIA DA GRID MODAL PARA A GRID ITENS
			for(var gt=0;gt<linModal.length;gt++){
				if(linModal[gt].quant>0){
					total += parseFloat(linModal[gt].total);
					$('#grdItens').datagrid('insertRow',{
						index: 0,
						row: {
							B1_COD: linModal[gt].B1_COD,
							B1_DESC: linModal[gt].B1_DESC,
							quant: linModal[gt].quant,
							prcven: linModal[gt].prcven,
							prcuni: linModal[gt].prcuni,
							desc: linModal[gt].desc,
							acres: linModal[gt].acres,
							total: linModal[gt].total
						}
					});
				}
			}	

			// GRAVA O TOTAL DO PEDIDO
			$('#txtTotal').numberbox('setValue',total);

			// GRAVA O TOTAL DE LINHAS DA GRID ITENS
			totLinhaItens = $('#grdItens').datagrid('getRows').length-1;

			$("#mascara").unmask();

			return;
		}else{
			dado = eval("row."+oobj.colunas[0].field);
			$('#'+campo).val(dado);
			return;
		}
	}

	for(var bx=0;bx<oobj.colunas.length;bx++){
		if(document.getElementById(oobj.colunas[bx].field)){
			dado = eval("row."+oobj.colunas[bx].field);
			$('#'+oobj.colunas[bx].field).val(dado);
		}
	}// FECHAR FOR
}



/*
 autor : MARCELO DE CONTO
 descricao : CARREGA UM OBJETO COM TODAS AS VARIAVEIS NECESSARIAS PARA CADA TIPO DE CONSULTA
 data : 24/12/2014
*/
function carga(consultar,tipo){

	var oobj = new Object();

	// CASO FOR UMA CONSULTA DENTRO DO MODAL
	if(tipo=='C'){

		oobj.params = {
			campo: $('#ccModal').combobox('getValue'),
			pesquisa: $('#inFiltro').val()
		}
		consultar = $('#FlagModal').val();

		if(oobj.params.campo=='' || oobj.params.pesquisa==''){
			$.messager.alert('Aten&ccedil;&atilde;o!','Não existe consulta definida!','error');
			return;
		}

		if(consultar==''){
			$.messager.alert('Aten&ccedil;&atilde;o!','FlagModal esta em branco!','error');
			return;
		}	
	}

	// CARREGA OBJETO CONFORME O CONTEUDO DA VARIAVEL CONSULTAR
	switch (consultar){
	case 'CLIENTE' :
		oobj.title = 'Cliente';
		oobj.url = 'u_f3cliente.apw';
		oobj.largura = 570;
		oobj.altura = 400;
		oobj.pagLista = [10,20,30,40,50];
		oobj.colunas = [{field:'A1_COD',title:'Código',width:100,sortable:true},
			{field:'A1_LOJA',title:'Loja',width:60},
			{field:'A1_NOME',title:'Nome',width:350,sortable:true},
			{field:'A1_CGC',title:'CNPJ/CPF',width:150},
			{field:'A1_BAIRRO',title:'Bairro',width:300,sortable:true},
			{field:'A1_MUN',title:'Município',width:300,sortable:true},
			{field:'A1_EST',title:'Estado',width:60,sortable:true},
			{field:'A1_END',title:'Endereço',width:300,sortable:true},
			{field:'A1_TABELA',title:'Tabela',width:100,sortable:true},
			{field:'C5_CLIENT',title:'Cli. Entrega',width:300,hidden:true},
			{field:'C5_LOJAENT',title:'Loja de Entrega',width:60,hidden:true},
			{field:'A4_COD',title:'Cod. Transp.',width:100,hidden:true},
			{field:'A4_NOME',title:'Transportadora',width:300,hidden:true}];
		oobj.combo = [{id: 'A1_COD',value: 'CÓDIGO',selected: false},
			{id: 'A1_NOME',value: 'DESCRIÇÃO',selected: true},
			{id: 'A1_CGC',value: 'CNPJ/CPF',selected: false},
			{id: 'A1_MUN',value: 'MUNICÍPIO',selected: false}];
		break;
	case 'PEDIDO' :
		oobj.title = 'Pedido';
		oobj.url = 'u_f3pedido.apw';
		oobj.largura = 570;
		oobj.altura = 400;
		oobj.pagLista = [10,20,30,40,50];
		oobj.colunas = [{field:'pedido',title:'C&oacute;digo',width:100},
			{field:'cliente',title:'Cliente',width:400}];
		oobj.combo = [{id: 'C5_NUM',value: 'Código',selected: false}];
		if(tipo=='C'){
			oobj.params = {
				campo: $('#ccModal').combobox('getValue'),
				pesquisa: $('#inFiltro').val(),
				modal:'S'}
		}else{
			oobj.params = {modal:'S'}
		}
		break;
	case 'PRODUTO' :
		oobj.title = 'Produto';
		oobj.url = 'u_f3produto.apw';
		oobj.largura = 1010;
		oobj.altura = 500;
		oobj.pagLista = [10,20,30,40,50,70,100];
		oobj.colunas = [
			{field:'B1_COD',title:'C&oacute;digo',width:150,sortable:true},
			{field:'B1_DESC',title:'Produto',width:400,sortable:true},
			{field:'prcven',title:'Preço Vend.',hidden:true,width:80,editor:{type:'numberbox',options:{min:0}}},
			{field:'prcuni',title:'Preço Unit.',width:80,editor:{type:'numberbox',options:{min:0,precision:3}}},
			{field:'quant',title:'Quant.',width:80,editor:{type:'numberbox',options:{min:0}}},
			{field:'desc',title:'Desconto',width:80,editor:{type:'numberbox',options:{min:0,precision:3}}},
			{field:'acres',title:'Acrescimo',width:80,editor:{type:'numberbox',options:{min:0,precision:3,max:50}}},
			{field:'total',title:'Total',width:100,type:'numberbox',editor:{type:'numberbox',options:{min:0,precision:6,disabled:true}}}
		];
		oobj.combo = [{id: 'B1_COD',value: 'Código',selected: false},
			{id: 'B1_DESC',value: 'Descrição',selected: false}];
		if(tipo=='C'){
			oobj.params = {
				campo: $('#ccModal').combobox('getValue'),
				pesquisa: $('#inFiltro').val(),
				tabela: $('#A1_TABELA').val()}
		}else{
			oobj.params = {tabela: $('#A1_TABELA').val()}
		}
		break;
	case 'CONDICAO' :
		oobj.title = 'Condição de Pagamento';
		oobj.url = 'u_f3cond.apw';
		oobj.largura = 570;
		oobj.altura = 400;
		oobj.pagLista = [10,20,30,40,50];
		oobj.colunas = [{field:'E4_CODIGO',title:'Código',width:100,sortable:true},
			{field:'E4_DESCRI',title:'Condição de Pagamento',width:300,sortable:true}];
		oobj.combo = [{id: 'E4_CODIGO',value: 'Código',selected: false},
			{id: 'E4_DESCRI',value: 'Descrição',selected: false}];
		break;
	case 'TRANSPORTADORA' :
		oobj.title = 'Transportadora';
		oobj.url = 'u_f3transp.apw';
		oobj.largura = 570;
		oobj.altura = 400;
		oobj.pagLista = [10,20,30,40,50];
		oobj.colunas = [{field:'A4_COD',title:'C&oacute;digo',width:100,sortable:true},
			{field:'A4_NOME',title:'Transportadora',width:300,sortable:true}];
		oobj.combo = [{id: 'A4_COD',value: 'CÓDIGO',selected: false},
			{id: 'A4_NOME',value: 'DESCRIÇÃO',selected: false}];
		break;
	default:
		$.messager.alert('Aten&ccedil;&atilde;o!','Nenhuma definicao de consulta encontrada para criar a Modal!','error');
		return false;
	}

return oobj
}

// EDITA AS LINHAS DENTRO DA GRID DO MODAL
function editModal(index){

	var modal = $('#FlagModal').val();
	if(modal!='PRODUTO'){return;}
	modalAberta = true;

	if (editIndexModal != index){
		if (fimEditModal()){
			var grid = $('#grdModal');
			grid.datagrid('selectRow', index);
			grid.datagrid('beginEdit', index);
			grid.datagrid('getEditors', index)[2].target.next().children()[0].focus();
			editIndexModal = index;
		} else {
			$('#grdItens').datagrid('selectRow', editIndexModal);
		}
	}
}

// GRAVA E FINALIZA A EDICAO NA GRID MODAL
function fimEditModal(){

	if (editIndexModal == undefined){return true}

	if ($('#grdModal').datagrid('validateRow', editIndexModal)){
		$('#grdModal').datagrid('endEdit', editIndexModal);
		$('#grdModal').datagrid('clearSelections');
		editIndexModal = undefined;
		return true;
	} else {
		return false;
	}
}